package com.info.protocol.serial;

public interface Serializer {

    /**
     * 序列化
     *
     * @param obj 待序列化的对象
     * @param <T>
     * @return 序列化后得到的二进制数据
     */
    <T> byte[] serialize(T obj);

    /**
     * @param data 待反序列化的byte数组
     * @param clz  序列化后的对象class类型
     * @param <T>
     * @return 序列化后得到的对象
     */
    <T> T deserialize(byte[] data, Class<T> clz);

    /**
     * 序列化的方式，多种序列化方式的时候，该方法可以区分序列化的类型
     *
     * @return 实现序列化的方式
     */
    byte getType();
}
